home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
IRIX Base Documentation 1998 November
/
IRIX 6.5.2 Base Documentation November 1998.img
/
usr
/
share
/
catman
/
u_man
/
cat1
/
bru.z
/
bru
Wrap
Text File
|
1998-10-20
|
42KB
|
859 lines
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
NNNNAAAAMMMMEEEE
bru - backup and restore utility
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
bbbbrrrruuuu mmmmooooddddeeeessss [ ccccoooonnnnttttrrrroooollll ooooppppttttiiiioooonnnnssss ] [ sssseeeelllleeeeccccttttiiiioooonnnn ooooppppttttiiiioooonnnnssss ] files
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
_B_r_u is a UUUUNNNNIIIIXXXX filesystem backup utility with significant enhancements
over other more common utilities such as _t_a_r, _c_p_i_o, _v_o_l_c_o_p_y, and _d_d.
Some of _b_r_u's capabilities include:
o Full or incremental backup with quick and easy restoration of
files.
o Multiple physical volumes per archive.
o Data integrity assurance via checksum computation on every
archive block.
o Ability to properly save and restore directories, symbolic links,
block special files, and character special files.
o Comparison of archives with current directory hierarchy.
o Ability to recover files from corrupted archives or damaged media
with minimal data loss.
o No inherent maximum archive buffer size.
o Improved performance through random access archive I/O when
available.
o Automatic byte or half word swapping as necessary when reading
archives produced on other machines.
o Recognition of filename generation patterns in the same form as
the shell for files read from an archive.
When _f_i_l_e_s are specified on the command line then the actions to be
performed are limited to those _f_i_l_e_s. If a named file is a directory
then it and all its descendents are used. If no _f_i_l_e_s are specified then
the default for writing archives is all files in and below the current
directory. The default for reading archives is selection of all files in
the archive.
If ``-'' is given instead of _f_i_l_e_s then the standard input is read to
obtain the file list. This is useful in conjunction with the _f_i_n_d
command to provide finer control over files selected for backup.
Obviously this mode is only valid when _b_r_u is not also reading its
archive from the standard input.
If you are doing backups non-interactively (for example, via _c_r_o_n, be
sure to read the description of the ----BBBB option below.
DDDDEEEEFFFFAAAAUUUULLLLTTTTSSSS
Various default parameters, such as archive device name and size, archive
buffer size, controlling terminal name, etc. are system dependent.
These defaults, along with version, variant, and other miscellaneous
internal information may be discovered via the ----hhhh mode.
_b_r_u assumes the default tape device to be ////ddddeeeevvvv////ttttaaaappppeeee if no tape device is
PPPPaaaaggggeeee 1111
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
specified using the ----ffff option. For this to work correctly, ////ddddeeeevvvv////ttttaaaappppeeee
should be linked to the actual tape device, for ex. ////ddddeeeevvvv////mmmmtttt////ttttppppssss0000dddd6666.... Also
there should be an appropriate entry for ////ddddeeeevvvv////mmmmtttt////ttttppppssss0000dddd6666 in the
////eeeettttcccc////bbbbrrrruuuuttttaaaabbbb file.
MMMMOOOODDDDEEEESSSS
One or more of the following modes must be specified. The order of
execution, from highest priority to lowest, is eeeecccciiiittttxxxxddddgggghhhh.
----cccc CCCCrrrreeeeaaaatttteeee a new archive. Forces a new archive to be created
regardless of whether one currently exists. Writing starts at
the first block.
----dddd DDDDiiiiffffffffeeeerrrreeeennnncccceeeessss between archived _f_i_l_e_s and current _f_i_l_e_s are
detected and reported. May be specified more than once, as ----dddddddd
----dddddddddddd or ----dddddddddddddddd to control level of difference checking.
When specified as ----dddd _b_r_u reports when it discovers that a
regular file's size (st_size) or contents (when compared as
byte streams) has changed since the archive was made.
When specified as ----dddddddd _b_r_u reports additional differences in
modification date (st_mtime) access mode (st_mode), number of
links (st_nlink) for non-directory files, differences in the
contents of symbolic links, owner id (st_uid), and group id
(st_gid).
When specified as ----dddddddddddd _b_r_u reports additional differences in
host device (st_dev), major/minor device (st_rdev) for special
files, and time of last access (st_atime) for regular files.
When specified as ----dddddddddddddddd _b_r_u reports all differences except time
of last status change (st_ctime is not resettable), major/minor
device numbers for non-special files (meaningless), and size
differences for directory files (may have empty entries). The
----dddddddddddddddd mode is generally only meaningful during a verification
pass with full backups of quiescent filesystems.
----eeee EEEEssssttttiiiimmmmaaaatttteeee media requirements for archive creation with same
arguments. Prints estimated number of volumes, number of files
to be archived, total number of archive blocks, and total size
of archive in kilobytes. If the media size is unknown,
unspecified, or set to 0 via the ----ssss flag or the _b_r_u_t_a_b file, it
is assumed to be infinite. The ----ZZZZ flag may also be given. If
used, every file that would be backed up will be compressed to
a temporary file, which may slow down the estimation
considerably. When ----ZZZZ,----cccc and ----eeee are all used, each file will
be compressed twice, once during the estimation pass, and once
while writing to the archive.
PPPPaaaaggggeeee 2222
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
----gggg Dump archive info block in a form more easily parsed by
programs implementing a complete filesystem management package.
Performs no other archive actions. Note: when used with ----tttt,
and the rewind tape device, this information is printed after
the file list. This option will not work when used with ----tttt if
the norewind tape device is used, since _b_r_u expects to be
positioned at the beginning of the tape archive after the tape
device is closed. When a number of _b_r_u archives are written to
the same tape, a sequence like that below will work correctly
(where # is the position of a particular archive set), listing
first the label information, and then the files in the same
archive.
mt fsf #
bru -vgf /dev/nrtape
mt bsf 1
bru -vtf /dev/nrtape
----hhhh Print hhhheeeellllpppp summary of options. Also prints some internal
information such as version number and default values for archive
pathname, media size, archive buffer size, etc.
----iiii IIIInnnnssssppppeeeecccctttt archive for internal consistency and data integrity. When
----vvvvvvvv option is also given, prints information from archive header
block.
----tttt List ttttaaaabbbblllleeee of contents of archive. When used with the ----vvvv option
will give a verbose table of contents in the same format as the ``ls
-l'' command. When used with the ----vvvvvvvv option will also indicate what
files are linked to other files, and where symbolic links point to.
----xxxx EEEExxxxttttrrrraaaacccctttt named _f_i_l_e_s from archive. If an archived file is extracted
(see ----uuuu option) then the access mode, device id (special files
only), owner uid, group uid, access time, and modification time are
also restored. If the ----CCCC flag is given (see below), then the owner
uid and group uid will be changed to that of the current user.
Nonexistent directories are recreated from archived directories if
possible, otherwise they are created with appropriate defaults for
the current user. Extracted or created directories are initially
empty.
CCCCOOOONNNNTTTTRRRROOOOLLLL OOOOPPPPTTTTIIIIOOOONNNNSSSS
Many of the control options are similar in function to their _t_a_r or _c_p_i_o
equivalents.
Sizes are specified in bytes. The scale factors MMMM, kkkk, or bbbb, can be used
to indicate multiplication by 2**20, 1024, or 512 respectively. Thus
``10k'', ``20b'', and ``10240'' all specify the same number of bytes.
PPPPaaaaggggeeee 3333
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
----aaaa Do not update the aaaacccccccceeeessssssss times of disk files that have been read
while performing other actions. Normally _b_r_u restores the access
and modification times of disk files after they have been read to
the access and modification times to whatever they were before the
read operation. Restoring the times prevents defeat of the
mechanism used to track down and remove ``dead'' files that haven't
been accessed in any meaningful way recently. Note that this has
the side effect that backup programs such as _d_u_m_p(1m) will backup
the file, since the _c_t_i_m_e of the file will have been modified; use
of ----aaaa is therefore recommended when using _d_u_m_p as your system backup
utility. Use of ----aaaa will also slightly speed up backups, since the
inode will not be written.
----bbbb _b_s_i_z_e
Use _b_s_i_z_e as the archive input/output bbbbuuuuffffffffeeeerrrr size. The minimum is
the size of an archive block (2k or 2048 bytes) and the maximum is
determined by available memory and I/O device limitations. If _b_s_i_z_e
is not an even multiple of 2048 bytes, it will be rounded up.
Normally this option is only required with the ----cccc mode since _b_r_u
writes this information in the archive header block. If specified,
_b_s_i_z_e overrides any existing default value (generally 20k), whether
built in or read from the archive header.
----BBBB Useful in shell scripts where _b_r_u is run in the bbbbaaaacccckkkkggggrrrroooouuuunnnndddd with no
operator present or not possible, such as when there is no
controlling terminal, causing an open of ////ddddeeeevvvv////ttttttttyyyy to fail. Under
these conditions, _b_r_u simply terminates with appropriate error
messages and status, rather than attempting interaction with the
terminal. With this option, _b_r_u will exit, rather than try to open
the controlling terminal. In this case, the entire backup must fit
on a single tape or other media, as there is no way to ask for a
media change.
----CCCC Change the owner (cccchhhhoooowwwwnnnn) and group of each extracted file to the
owner uid and group gid of the current user. Normally, _b_r_u will
restore the owner and group to those recorded in the archive. This
flag causes bru to follow the system default, with extracted files
having the same owner and group as the user running _b_r_u, including
Root.
The ----CCCC option is useful with archives imported from other systems.
In general, it should not be used by the operator or system
administrator when restoring saved files. Use the ----ttttvvvv option to see
the owner and group of files stored in the archive.
----DDDD This option is not implemented, but is still accepted for backward
compatibility with scripts that may use it.
----ffff _p_a_t_h
Use _p_a_t_h as the archive ffffiiiilllleeee instead of the default. If the _p_a_t_h is
``-'' then _b_r_u uses the standard input for archive reading or
standard output for archive writing, as appropriate. If the path is
PPPPaaaaggggeeee 4444
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
remote then it needs to be specified as [_u_s_e_r@]_s_y_s_t_e_m:/_d_e_v/???
The <user@> part of the path is optional, and if none is specified
then the user's login is used. The login has to be equivalently
mapped to the remote machine if it has a password.
----FFFF FFFFaaaasssstttt mode. In fast mode, checksum computations and comparisons are
disabled. This mode is useful when the output of one _b_r_u is piped
to the input of another _b_r_u, or when the data integrity of the
archive transmission medium is essentially perfect. Archives
recorded with fast mode enabled must also be read with fast mode.
Also, be aware that some of the automatic features of _b_r_u, such as
automatic byte swapping, are not functional in fast mode.
----jjjj Convert aaaabbbbssssoooolllluuuutttteeee pathnames to "." relative pathnames. This option
applies only to the ----xxxx mode.
----XXXX Echo relative pathnames as absolute pathnames. This option only
valid when used in conjunction with the -x, -j and -v options.
----LLLL _s_t_r
LLLLaaaabbbbeeeellll the archive with the specified string _s_t_r. _S_t_r is limited to
63 characters and is usually some meaningful reminder pertaining to
the archive contents.
----llll Ignore unresolved lllliiiinnnnkkkkssss. Normally bru reports problems with
unresolved links (both regular and symbolic links). This option
suppresses all such complaints.
----mmmm Do not cross mmmmoooouuuunnnntttteeeedddd filesystem boundaries during expansion of
explicitly named directories. This option applies only to
directories named in _f_i_l_e_s. It limits selection of directory
descendents to those located on the same filesystem as the
explicitly named directory. This option currently applies only to
the ----cccc and ----eeee modes.
----pppp PPPPaaaassssssss over files in archive by reading rather than seeking. Normally
_b_r_u will use random access capabilities if available. This option
forces reading instead of seeks.
----RRRR RRRReeeemmmmooootttteeee files are to be eeeexxxxcccclllluuuuddddeeeedddd from the archive (unless explicitly
listed on the command line; remote directories on the command line
are backed up as a directory, but files, subdirectories, etc.
therein will not be backed up). Filesystems such as the _p_r_o_c(4)
filesystem are considered to not be local, based on the information
returned by the _s_t_a_t_v_f_s(2) system call.
----ssss _m_s_i_z_e
Use _m_s_i_z_e as the media ssssiiiizzzzeeee. The effective media ssssiiiizzzzeeee will be
computed from _m_s_i_z_e since it must be integral multiple of the
input/output buffer size (see the ----bbbb option). Normally this option
is only required with the ----cccc or ----eeee flags since _b_r_u writes this
information in the archive header block. If specified, _m_s_i_z_e
PPPPaaaaggggeeee 5555
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
overrides any existing default value, whether built in, read from
the _b_r_u_t_a_b file, or read from the archive header. If set to 0, the
tape is assumed to be infinite in length, and the archive is written
until an error occurs, at which time a new volume is prompted for.
----vvvv Enable vvvveeeerrrrbbbboooosssseeee mode. May be specified more than once, as ----vvvvvvvv, ----vvvvvvvvvvvv,
or ----vvvvvvvvvvvvvvvv, to get even more verbosity.
----wwww WWWWaaaaiiiitttt for confirmation. _B_r_u will print the filename, the action to
be taken, and wwwwaaaaiiiitttt for confirmation. Any response beginning with
'y' will cause the action to complete. Any other response will
abort the action.
----ZZZZ Use 12-bit LZW file compression. This is not the default because
not all versions of _b_r_u know how to deal with compressed files.
When the ----vvvv option is also selected, the compression ratio for each
file is printed as a percentage. When this flag is used in
conjunction with the ----tttt option on an archive that contains
compressed file, the actual archive file sizes and names are
printed, rather than the original values before archiving. Files
are compressed into a temporary file in a directory given by the
BRUTMPDIR environment variable. If not given, /usr/tmp is used.
----KKKK Required to archive files larger than 2 Gigabytes. _BBBB_rrrr_uuuu will issue a
warning and skip such files if the _----_KKKK flag is not specified. Must
be used in conjunction with the _----_ZZZZ flag. If _BBBB_rrrr_uuuu can compress the
file to a size smaller than 2 Gigabytes, the file will be archived.
Otherwise, a warning will be issued and the file will be skipped.
FFFFIIIILLLLEEEE SSSSEEEELLLLEEEECCCCTTTTIIIIOOOONNNN OOOOPPPPTTTTIIIIOOOONNNNSSSS
The file selection options control which files are selected for
processing. Note that some options are only valid with specific modes.
----nnnn_d_a_t_e Select only files nnnneeeewwwweeeerrrr than _d_a_t_e, where this is based on the
file modification time (see _ssss_tttt______mmmm_tttt_iiii_mmmm_eeee in _ssss_tttt_aaaa_tttt(2)); the inode
modification time is not checked. The _d_a_t_e is given in one of
the forms:
DD-MMM-YY[YY][,HH:MM:SS] EX: 12-Mar-84,12:45:00
MM/DD/YY[YY][,HH:MM:SS] EX: 3/12/84
MMDDHHMM[YY[YY]] EX: 0312124584
pathname EX: /etc/lastfullbackup
The time of day is optional in the first two forms. If
present, it is separated from the date with a comma. If YY is
less than 39, it is assumed to be in the range 2000-2039.
Otherwise, if less than 100, it is assumed to be in the range
1940-1999. The resulting year must be in the range 1970-2038.
If _d_a_t_e is really the pathname of a file, then the modification
date of that file will be used instead. This is useful in
automated backups when a dummy file is ``touched'' to save the
PPPPaaaaggggeeee 6666
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
date of last backup.
----oooo _u_s_e_r Select only files oooowwwwnnnneeeedddd by _u_s_e_r. _U_s_e_r may be specified in one
of three ways:
o As an ascii string corresponding to a user name in the
password file.
o As the pathname of a file in which case the owner of
that file is used.
o As a numeric value (decimal).
----uuuu _f_l_a_g_s When used in conjunction with ----xxxx mode, causes files of type
specified by _f_l_a_g_s to be uuuunnnnccccoooonnnnddddiiiittttiiiioooonnnnaaaallllllllyyyy selected regardless of
modification times. Normally _b_r_u will not overwrite
(supersede) an existing file with an older archive file of the
same name. Files which are not superseded will give warnings
if vvvveeeerrrrbbbboooosssseeee mode level 2 (----vvvvvvvv) or higher is enabled. Possible
characters for _f_l_a_g_s are:
bbbb select block special files
cccc select character special files
dddd select directories
llll select symbolic links
pppp select fifos (named pipes)
rrrr select regular files
Selection of directories only implies that their attributes may
be modified. Existing directories are never overwritten, this
option merely allows their attributes to be set back to some
previously existing state.
Selection of symbolic links only implies that the contents of
the link will be modified. It is currently impossible to
change access time, modification time, or the file mode of a
symbolic link.
EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
Create (----cccc) a new archive of all files under ``/usr/src'', writing
archive to file (----ffff) ``/dev/rmt0'' using multiple tapes with a maximum
size (----ssss) of 30 megabytes per tape.
bru -c -f /dev/rmt0 -s 30M /usr/src
Create (----cccc) a new archive on the default device in the first pass,
archiving all files in and below the current directory which have been
created or modified (----nnnn) since 3 P.M. on 14-Jan-84. Then do a second
pass to verify that there are no differences (----dddd) between the archive and
current files. Each file is listed (----vvvv) as it is processed.
bru -cvd -n 14-Jan-84,15:00:00
PPPPaaaaggggeeee 7777
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
Archive all files owned (----oooo) by user ``user1'' using the default archive
device.
find / -user user1 -print | bru -c -
bru -c -o user1 /
Copy a directory hierarchy from ``/usr/u1'' to ``/usr/u2''.
(cd /usr/u1; bru -cf - ) | (cd /usr/u2; bru -xf -)
Extract (----xxxx) the regular file ``/usr/guest/myfile'' unconditionally (----uuuurrrr)
from an archive on file (----ffff) ``/dev/rf0''. Since the device size was
recorded in the header block, it need not be specified. Note that option
arguments do not need to be separated from their corresponding option
flag by whitespace.
bru -x -ur -f/dev/rf0 ./usr/guest/myfile
Extract (----xxxx) all C source files in ``/usr/src/cmd'' that have names
beginning with characters 'a' through 'm'. Wait (----wwww) for confirmation
before extracting each file.
bru -xw '/usr/src/cmd/[a-m]*.c'
Inspect (----iiii) a previously created archive on the default device, dumping
the contents of the header block for inspection (----vvvvvvvvvvvv) and verifying
internal consistency and data integrity of the archive.
bru -ivvv
Back up the entire root filesystem without crossing mounted (----mmmm)
filesystem boundaries. The archive will be written to file (----ffff)
``/dev/rmt0'' using an I/O buffer size (----bbbb) of 10k bytes.
cd /
bru -cvm -f /dev/rmt0 -b 10k
DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
Most diagnostics are reasonably informative. The most common have to do
with meaningless combinations of options, incompatible options, hitting
memory or device limits, unresolved file links, trying to archive or
restore something to which access is normally denied, or problems with
media errors and/or archive corruption.
DDDDEEEEVVVVIIIICCCCEEEE TTTTAAAABBBBLLLLEEEE
_B_r_u contains an internal table of known devices and their
characteristics. This table is dynamically loaded from a data file
specified by the environment variable BBBBRRRRUUUUTTTTAAAABBBB, or from /_e_t_c/_b_r_u_t_a_b, or
from an internal default description if neither of the preceding is
found.
PPPPaaaaggggeeee 8888
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
The format of the _b_r_u data file for loadable devices is as follows. Note
that the table MUST contain at least one entry and the first entry is the
default archive device.
Also, the table should contain an entry for the standard input and
output, with a name of "-".
Entries consist of a device name field, followed by one or more
capabilities fields. Entries may span more than one line by escaping the
newline at the end of the line with a '\' character ('\' is last
character on line before newline). All whitespace (tabs, blanks,
newlines, formfeeds) between fields is ignored.
The device name field must be the first field in the entry and has the
following form:
<device name>|<device name>| ... |<device name>
example: /dev/rmt[0-2]|/dev/mt[0-2]
where each device has the same capabilities as the other devices
specified (a class of devices). Regular expressions as described in
_r_e_g_e_x_p(3) may be used.
Each capability field is of the form:
<capability name>=<value> or <boolean flag>
example: size=640K REOPEN pwerr=EIO
Note that there can be no whitespace between the capability name and the
value. Note that a size of 0 is treated specially, see the ----ssss flag
description above. Numeric values may be given in absolute form or with
a trailing scale factor of:
b or B Blocks (512 bytes)
k or K Kilobytes (1024 bytes)
m or M Megabytes (1024 * 1024 bytes)
Error numbers may be given in absolute or symbolic form, as defined in
<errno.h>.
Currently used capabilities include:
Name Type Meaning
______________________________________________________________________
size numeric media size in bytes if known, zero otherwise
seek numeric minimum seek resolution, zero if no seeks allowed
prerr numeric errno for partial reads
pwerr numeric errno for partial writes
zrerr numeric errno for zero reads
zwerr numeric errno for zero writes
PPPPaaaaggggeeee 9999
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
frerr numeric errno for read of unformatted media
fwerr numeric errno for write of unformatted media
wperr numeric errno for write protected media
reopen boolean close and reopen archive upon media switch
noreopen boolean no close and reopen archive upon media switch
tape boolean archive device is a tape drive
rawtape boolean archive device is a "raw" tape drive
used primarily with devices that support
multiple block sizes
norewind boolean closing does not automatically rewind
advance boolean read/writes advance media even when errors occur
For instance, an excerpt from /_e_t_c/_b_r_u_t_a_b for SCSI tapedrives is:
/dev/r*mt/tps[0-9]d[1-7]nr* \
size=0K seek=0 \
prerr=EIO pwerr=EIO zrerr=ENOSPC zwerr=ENOSPC frerr=0 fwerr=0 \
wperr=EROFS norewind reopen tape rawtape advance
#
/dev/r*mt/tps[0-9]d[1-7]* \
size=0K seek=0 \
prerr=EIO pwerr=EIO zrerr=ENOSPC zwerr=ENOSPC frerr=0 fwerr=0 \
wperr=EROFS reopen tape rawtape advance
# This entry is a generic entry for stdin and stdout.
- size=0 seek=0 prerr=0 pwerr=0 zrerr=0 zwerr=0 frerr=0 fwerr=0 wperr=0
The internal table that is used if no file can be found is:
/dev/tape* \
size=0k seek=0 \
prerr=EIO pwerr=EIO zrerr=ENOSPC zwerr=ENOSPC frerr=0 fwerr=0 \
wperr=EROFS reopen tape rawtape advance
/dev/nrtape* \
size=0k seek=0 \
prerr=EIO pwerr=EIO zrerr=ENOSPC zwerr=ENOSPC frerr=0 fwerr=0 \
wperr=EROFS norewind reopen tape rawtape advance
SSSSIIIIGGGGNNNNAAAALLLL HHHHAAAANNNNDDDDLLLLIIIINNNNGGGG
_B_r_u normally catches both interrupt (SIGINT) and quit (SIGQUIT). When
interrupt is caught during archive creation or extraction, _b_r_u completes
its work on the current file before cleaning up and exiting. This is the
normal way of aborting _b_r_u. When a quit signal is caught an immediate
exit is taken.
Note that during file extraction, a quit signal may leave the last file
only partially extracted. Similarly, a quit signal during archive
writing may leave the archive truncated. When either interrupt or quit
is caught at any other time an immediate exit is taken.
PPPPaaaaggggeeee 11110000
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
EEEERRRRRRRROOOORRRR RRRREEEECCCCOOOOVVVVEEEERRRRYYYY
When properly configured for a given software/hardware environment, bru
can recover from most common errors. For example, attempts to use
unformatted media are detected, allowing substitution of formatted media.
Random blocks in an archive can be deliberately overwritten (corrupted)
without affecting _b_r_u's ability to recover data from the rest of the
archive. When I/O errors are detected, retries are performed
automatically. Out of order sequencing on multi-volume archive reads is
detected, allowing replacement with the correct volume.
DDDDIIIIRRRREEEECCCCTTTTOOOORRRRIIIIEEEESSSS
When creating non-incremental archives _b_r_u automatically archives all
directories necessary to fully restore any file from the archive. During
extraction, any required directories which do not already exist are
restored from the archive if possible, otherwise they are created with
appropriate defaults for the current user.
The net result is that restoration from incremental archives (which may
not contain all necessary directories), or incremental restoration from
full archives (which may skip directories needed later), may result in
creation of directories with the default attributes.
WWWWIIIILLLLDDDDCCCCAAAARRRRDDDDSSSS
When rrrreeeeaaaaddddiiiinnnngggg archives _b_r_u recognizes filename generation patterns in the
same format as the shell. This allows greater flexibility in specifying
files to be extracted, compared, or listed. As a special extension to
shell type expansion, the sense of the match is reversed for patterns
that begin with '!'.
Note that the patterns may have to be quoted to prevent expansion by the
shell. Also note that patterns are processed independently, without
regard for any other patterns that may or may not be present. In
particular, "/bin/a* /bin/b*" is equivalent to "/bin/[ab]*", but
"/bin/!a* /bin/!b*" is equivalent to "/bin/*", nnnnooootttt "/bin/![ab]*".
BBBBYYYYTTTTEEEE////WWWWOOOORRRRDDDD SSSSWWWWAAAAPPPPPPPPIIIINNNNGGGG
While reading archives produced on other machines, _b_r_u automatically
attempts to perform byte and/or word swapping as necessary.
If no device table is specified, _b_r_u automatically uses the no-swap tape
device, which provides higher performance and compatibility with non-byte
swapped tapes from other systems. The IRIS 3000 series does not support
non-byte swapped tapes, but the automatic byte-swapping capabilities of
_b_r_u will deal with this problem.
RRRREEEEMMMMOOOOTTTTEEEE TTTTAAAAPPPPEEEE DDDDRRRRIIIIVVVVEEEESSSS
_B_r_u allows the use of remote tape drives for the archive device (via the
----ffff option). A remote tape drive filename has the form
[_u_s_e_r@]_s_y_s_t_e_m:/_d_e_v/???
where _s_y_s_t_e_m is the remote system, the optional _u_s_e_r is the login name to
PPPPaaaaggggeeee 11111111
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
use on the remote system if different from the current user's login name,
and ////ddddeeeevvvv////???????????? is the tape drive to use (1600 BPI or 800 BPI, raw or
blocked, rewinding or non-rewinding, etc.). In all cases, the user must
have the appropriate permissions on the remote system. (See also the
CCCCAAAAVVVVEEEEAAAATTTTSSSS section, below.)
EEEEXXXXIIIITTTT CCCCOOOODDDDEEEESSSS
_B_r_u always returns meaningful status as follows:
0 Normal exit, no errors or warnings.
1 Warnings (or interrupted).
2 Errors (or quit signal).
SSSSEEEEEEEE AAAALLLLSSSSOOOO
cpio(1), rmt(1M), tar(1), attr(1), xfsdump(1).
UUUUNNNNIIIIXXXX SSSSYYYYSSSSTTTTEEEEMMMM IIIINNNNCCCCOOOOMMMMPPPPAAAATTTTIIIIBBBBIIIILLLLIIIITTTTIIIIEEEESSSS
_B_r_u recognizes special file types that may be allowed on one type of UUUUNNNNIIIIXXXX
system, but not on another. For instance, on a 4.2 BSD system, _b_r_u will
extract fifos as plain files (mode 0666, as modified by the _u_m_a_s_k), and
issue an appropriate error message. Usually, _b_r_u will issue two
messages. The first message will be the more descriptive of the two.
Currently, the only different UUUUNNNNIIIIXXXX systems that _b_r_u fully understands are
System V, 4.2 BSD, and Pyramid's OSx.
CCCCAAAAVVVVEEEEAAAATTTTSSSS
Pathnames are limited to 127 characters in length. This could become a
chronic problem.
Implementation differences complicate the algorithms for automatic
detection of end of file on devices. The algorithms can be fooled, hence
the ----ssss option.
Special files moved to a machine other than their original host will
generally be useless and possibly even dangerous. This goes double for
symbolic links.
When extracting files from archives, patterns used to match directories
may result in some unnecessary directories being extracted. For example,
if the pattern is ``a/*/c'', and the directory ``a/b'' is encountered in
the archive, the directory file ``a/b'' will be extracted since it will
be needed when (and if) the file ``a/b/c'' is encountered. When in
doubt, use the ----wwww option.
In order to be able to efficiently archive needed directories, _b_r_u builds
an image of the directory tree for _f_i_l_e_s using dynamically allocated
memory. Since there may be at most 5120 characters passed on the command
line, it is very unlikely that _b_r_u will run out of memory while building
the tree from command line arguments. This is not true of file lists
read from the standard input, particularly on machines with limited
address space.
PPPPaaaaggggeeee 11112222
bbbbrrrruuuu((((1111)))) bbbbrrrruuuu((((1111))))
Information about file linkages is also kept in memory. Some linkages
may be lost if memory is exhausted.
Since _b_r_u is owned by root and runs with ``set user id'' to allow it to
create directories and special files, it makes every attempt to prevent
normal users from archiving or extracting files they would normally not
have access to. There may be loopholes. Also note that anyone with
physical or electronic access to an archive, and knowledge of the archive
structure, can recover any of its contents by writing their own file
extraction program.
Files within directories which have filesystems mounted on them will not
be properly archived until the filesystem is unmounted, since the mounted
filesystem hides them. This is not generally a problem.
Explicitly naming both a directory and one of its descendents will cause
the descendent to be archived twice, unless they are on separate
filesystems and the ----mmmm flag is used.
Explicitly naming a file more than once is ineffective.
When reading from the raw magnetic tape file (rmtxxx) _b_r_u automatically
attempts to adjust the I/O buffer size to match that used to record the
archive. Under certain circumstances it may fail and require help via
the ----bbbb option.
Using remote tape drives can be slow.
Extended Attributes are not archived or restored. See _a_t_t_r(1) for more
information about Extended Attributes and see _x_f_s_d_u_m_p(1m) for a method to
back them up.
PPPPaaaaggggeeee 11113333